// enum  枚举  一个一个举例出来
// 作用 : 限制了可选择的可选项
enum Colors {
  RED = 1,
  YELLOW = 2,
  PINK = 3,
  GREEN = 4
}

// 星期多少

// 性别  男 女 未知
// 影片后缀  .av  .avi  .mp4


function getColor(color: Colors) {
  switch (color) {
    case Colors.GREEN:
      console.log('green');
      break;
    case Colors.PINK:
      console.log('pink');
      break;
    case Colors.RED:
      break;

  }
}

getColor(Colors.GREEN);

// 题  人: 属性 姓名 年龄 性别 昵称(nickname可选项) 身份证 不可修改(ID)
// 函数  传递一个人  , 传递一个性别的爱好(枚举)   随机 返回另一个人  男 : 对应的信息 元组 [string number 枚举] 女 这个女的对应的信息  未知 未知对应的信息
//

interface Person {
  name: string;
  age: number;
  nickname?: string;
  readonly ID: string;
}

enum SEXType {
  MEN,
  WOMAN,
  UnKnow
}

// type : 声明一个类型 和interface区别
type PersonInfo = [string, number, SEXType];

// type str = number | string;
let personInfo: Array<PersonInfo> = [];


function getPerson(person: Person, like: SEXType): PersonInfo {

  for (let i = 0; i < 100; i++) {
    personInfo.push(['萝莉' + i, i, Math.floor(Math.random() * 3)]);
  }
  return personInfo[Math.floor(Math.random() * 101)];
}

let res = getPerson({name: '小王', age: 20, ID: '123456'}, SEXType.UnKnow);

console.log(res);


// 联合类型 和交叉类型  type
